package com.CampaignManager.shared;

import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;

@RemoteServiceRelativePath("campaign")
public interface CampaignService extends RemoteService {
	
	public PlayerDTO[] login(String requestUri) throws NotLoggedInException;
	
	public PlayerDTO CreateNewPlayer(String requestUri, String name, String desc, String faction) throws NotLoggedInException;
	
	public void SetDoneTutorial(String tut) throws NotLoggedInException;
	
	public Long AddCity(CityDTO city) throws NotLoggedInException;
	
	public void UpdateCityLocation(Long id, double lat, double lng) throws NotLoggedInException;
	
	public CityDTO[] GetCities() throws NotLoggedInException;
	
	public void UpdateArmyDestination(String email, double originLat, double originLong, double destLat, double destLong, double miles) throws NotLoggedInException;
	
	public boolean CheckExistingPendingJob() throws NotLoggedInException;
	
	public String CreateJob(JobDTO job) throws NotLoggedInException;
	
	public JobDTO[] GetJobs(String email) throws NotLoggedInException;
	
	public void CompleteJob(JobDTO job) throws NotLoggedInException;
	
	public UnitTypeDTO[] GetUnitTypes(String faction, boolean mercs) throws NotLoggedInException;
	
	public void PrimeData();
	
	public UnitDTO BuyUnit(UnitTypeDTO unitType) throws NotLoggedInException;
	
	public String UpgradeUnit(UnitDTO unit) throws NotLoggedInException;
	
	public void Forage() throws NotLoggedInException;
	
	public void CancelEspionage() throws NotLoggedInException;
	
	public void Extort(String cityName) throws NotLoggedInException;
	
	public void UpdateBio(String bio) throws NotLoggedInException;
	
	public void IncrementStat(String email, PlayerDTO.Stat s) throws NotLoggedInException;
	
	/*public PlayerClient[] getPlayers() throws NotLoggedInException;
	public void updatePlayerLocation(String email, double lat, double lng) throws NotLoggedInException;
	
	public Long addMessage(InboxMessageClient messageClient) throws NotLoggedInException;
	public void removeMessage(Long id) throws NotLoggedInException;
	public InboxMessageClient[] getInbox() throws NotLoggedInException;
	
	public Long addUnitType(UnitTypeClient unitTypeClient) throws NotLoggedInException;
	public void removeUnitType(Long id) throws NotLoggedInException;
	public UnitTypeClient[] getUnitTypes() throws NotLoggedInException;
	public void UpdateCost(Long id, String resource) throws NotLoggedInException;
	
	public UnitClient BuyUnit(UnitTypeClient unitType) throws NotLoggedInException;
	public UnitClient UpgradeUnit(UnitClient unit) throws NotLoggedInException;
	
	public void removeUnit(Long id) throws NotLoggedInException;
	public UnitClient[] getUnits() throws NotLoggedInException;
	
	public Long addMarker(MapMarkerClient markerClient) throws NotLoggedInException;
	public void removeMarker(Long id) throws NotLoggedInException;
	public MapMarkerClient[] getMarkers() throws NotLoggedInException;
	public void UpdateMarkerLocation(Long id, double lat, double lng) throws NotLoggedInException;
	
	public Long addRegion(RegionClient regionClient) throws NotLoggedInException;
	public RegionClient[] getRegions() throws NotLoggedInException;
	public void UpdateRegionLocation(Long id, double lat, double lng) throws NotLoggedInException;
	public void HarvestRegion(RegionClient regionClient, String resource) throws NotLoggedInException;*/
}
